home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / sendmail / sendmail-5.65c+IDA-1.4.4.1 / aux / matchhdr.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-06-05  |  2.7 KB  |  112 lines

  1. /*
  2.  * Copyright (c) 1983 Eric P. Allman
  3.  * Copyright (c) 1988 Regents of the University of California.
  4.  * All rights reserved.
  5.  *
  6.  * Redistribution and use in source and binary forms are permitted provided
  7.  * that: (1) source distributions retain this entire copyright notice and
  8.  * comment, and (2) distributions including binaries display the following
  9.  * acknowledgement:  ``This product includes software developed by the
  10.  * University of California, Berkeley and its contributors'' in the
  11.  * documentation or other materials provided with the distribution and in
  12.  * all advertising materials mentioning features or use of this software.
  13.  * Neither the name of the University nor the names of its contributors may
  14.  * be used to endorse or promote products derived from this software without
  15.  * specific prior written permission.
  16.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
  17.  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  18.  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  19.  */
  20.  
  21. #ifndef lint
  22. char copyright[] =
  23. "@(#) Copyright (c) 1988 Regents of the University of California.\n\
  24.  All rights reserved.\n";
  25. #endif /* not lint */
  26.  
  27. #ifndef lint
  28. static char sccsid[] = "@(#)matchhdr.c    5.4 (Berkeley) 6/1/90";
  29. #endif /* not lint */
  30.  
  31. # include <stdio.h>
  32. # include <ctype.h>
  33. # include <useful.h>
  34.  
  35. SCCSID(@(#)matchhdr.c    5.4        6/1/90);
  36.  
  37. /*
  38. **  MATCHHDR -- Match header line
  39. **
  40. **    Matches a header line in arpanet format (case and white
  41. **    space is ignored).
  42. **
  43. **    This routine is used by arpa-mailer and sendmail.
  44. **
  45. **    Parameters:
  46. **        line -- the line to match against.
  47. **        pat -- the pattern to match against; must be in
  48. **            lower case.
  49. **
  50. **    Returns:
  51. **        address of the 'value' of the pattern (the beginning
  52. **            of the non-white string following the delim).
  53. **        NULL if none found.
  54. **
  55. **    Side Effects:
  56. **        none
  57. **
  58. **    Called By:
  59. **        maketemp
  60. **        sendmail [arpa.c]
  61. **
  62. **    Deficiencies:
  63. **        It doesn't handle folded lines.
  64. */
  65.  
  66. char *
  67. matchhdr(line, pat)
  68.     char *line;
  69.     char *pat;
  70. {
  71.     register char *p;
  72.     register char *q;
  73.  
  74.     for (q = pat, p = line; *q != '\0'; p++, q++)
  75.         if (lowercase(*p) != *q)
  76.             return (NULL);
  77.     while (isspace(*p))
  78.         p++;
  79.     if (*p != ':')
  80.         return (NULL);
  81.     while (isspace(*++p))
  82.         continue;
  83.     return (*p == '\0' ? NULL : p);
  84. }
  85. /*
  86. **  LOWERCASE -- Convert a character to lower case
  87. **
  88. **    If the argument is an upper case letter, it is converted
  89. **    to a lower case letter, otherwise it is passed through
  90. **    unchanged.
  91. **
  92. **    Parameters:
  93. **        c -- the character to check.
  94. **
  95. **    Returns:
  96. **        c converted to lower case.
  97. **
  98. **    Side Effects:
  99. **        none
  100. **
  101. **    Called By:
  102. **        matchhdr
  103. */
  104.  
  105. lowercase(c)
  106.     register char c;
  107. {
  108.     if (isupper(c))
  109.         c -= 'A' - 'a';
  110.     return (c);
  111. }
  112.